//! `FromBits` and `IntoBits` implementations for portable 512-bit wide vectors
#[rustfmt::skip]

#[allow(unused)]  // wasm_bindgen_test
use crate::*;

impl_from_bits!(
    i8x64[test_v512]: u8x64,
    m8x64,
    i16x32,
    u16x32,
    m16x32,
    i32x16,
    u32x16,
    f32x16,
    m32x16,
    i64x8,
    u64x8,
    f64x8,
    m64x8,
    i128x4,
    u128x4,
    m128x4
);
impl_from_bits!(
    u8x64[test_v512]: i8x64,
    m8x64,
    i16x32,
    u16x32,
    m16x32,
    i32x16,
    u32x16,
    f32x16,
    m32x16,
    i64x8,
    u64x8,
    f64x8,
    m64x8,
    i128x4,
    u128x4,
    m128x4
);
impl_from_bits!(m8x64[test_v512]: m16x32, m32x16, m64x8, m128x4);

impl_from_bits!(
    i16x32[test_v512]: i8x64,
    u8x64,
    m8x64,
    u16x32,
    m16x32,
    i32x16,
    u32x16,
    f32x16,
    m32x16,
    i64x8,
    u64x8,
    f64x8,
    m64x8,
    i128x4,
    u128x4,
    m128x4
);
impl_from_bits!(
    u16x32[test_v512]: i8x64,
    u8x64,
    m8x64,
    i16x32,
    m16x32,
    i32x16,
    u32x16,
    f32x16,
    m32x16,
    i64x8,
    u64x8,
    f64x8,
    m64x8,
    i128x4,
    u128x4,
    m128x4
);
impl_from_bits!(m16x32[test_v512]: m32x16, m64x8, m128x4);

impl_from_bits!(
    i32x16[test_v512]: i8x64,
    u8x64,
    m8x64,
    i16x32,
    u16x32,
    m16x32,
    u32x16,
    f32x16,
    m32x16,
    i64x8,
    u64x8,
    f64x8,
    m64x8,
    i128x4,
    u128x4,
    m128x4
);
impl_from_bits!(
    u32x16[test_v512]: i8x64,
    u8x64,
    m8x64,
    i16x32,
    u16x32,
    m16x32,
    i32x16,
    f32x16,
    m32x16,
    i64x8,
    u64x8,
    f64x8,
    m64x8,
    i128x4,
    u128x4,
    m128x4
);
impl_from_bits!(
    f32x16[test_v512]: i8x64,
    u8x64,
    m8x64,
    i16x32,
    u16x32,
    m16x32,
    i32x16,
    u32x16,
    m32x16,
    i64x8,
    u64x8,
    f64x8,
    m64x8,
    i128x4,
    u128x4,
    m128x4
);
impl_from_bits!(m32x16[test_v512]: m64x8, m128x4);

impl_from_bits!(
    i64x8[test_v512]: i8x64,
    u8x64,
    m8x64,
    i16x32,
    u16x32,
    m16x32,
    i32x16,
    u32x16,
    f32x16,
    m32x16,
    u64x8,
    f64x8,
    m64x8,
    i128x4,
    u128x4,
    m128x4
);
impl_from_bits!(
    u64x8[test_v512]: i8x64,
    u8x64,
    m8x64,
    i16x32,
    u16x32,
    m16x32,
    i32x16,
    u32x16,
    f32x16,
    m32x16,
    i64x8,
    f64x8,
    m64x8,
    i128x4,
    u128x4,
    m128x4
);
impl_from_bits!(
    f64x8[test_v512]: i8x64,
    u8x64,
    m8x64,
    i16x32,
    u16x32,
    m16x32,
    i32x16,
    u32x16,
    f32x16,
    m32x16,
    i64x8,
    u64x8,
    m64x8,
    i128x4,
    u128x4,
    m128x4
);
impl_from_bits!(m64x8[test_v512]: m128x4);

impl_from_bits!(
    i128x4[test_v512]: i8x64,
    u8x64,
    m8x64,
    i16x32,
    u16x32,
    m16x32,
    i32x16,
    u32x16,
    f32x16,
    m32x16,
    i64x8,
    u64x8,
    f64x8,
    m64x8,
    u128x4,
    m128x4
);
impl_from_bits!(
    u128x4[test_v512]: i8x64,
    u8x64,
    m8x64,
    i16x32,
    u16x32,
    m16x32,
    i32x16,
    u32x16,
    f32x16,
    m32x16,
    i64x8,
    u64x8,
    f64x8,
    m64x8,
    i128x4,
    m128x4
);
// note: m128x4 cannot be constructed from all the other masks bit patterns in
// here
